package com.example.apidocserver.domain.document.service;

import com.example.apidocserver.domain.document.entity.ApiDocument;

import java.util.List;

/**
 * (ApiDocument)表服务接口
 *
 * @author makejava
 * @since 2023-02-22 22:56:11
 */
public interface ApiDocumentService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ApiDocument queryById(Integer id);

    /**
     * 查询所有对象
     *
     * @return 查询结果
     */
    List<ApiDocument> queryAll();

    /**
     * 根据对象查询
     *
     * @param apiDocument 筛选条件
     * @return 查询结果
     */
    List<ApiDocument> queryByEntity(ApiDocument apiDocument);

    /**
     * 新增数据
     *
     * @param apiDocument 实例对象
     * @return 实例对象
     */
    ApiDocument insert(ApiDocument apiDocument);

    /**
     * 修改数据
     *
     * @param apiDocument 实例对象
     * @return 实例对象
     */
    ApiDocument update(ApiDocument apiDocument);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 查询工作空间下所有文档数据
     *
     * @param spaceId     工作空间id
     * @param writeFlag   是否为写查询，true时可以查询启用、停用用数据
     * @param pubOnlyFlag 查询数据是否公开，false时可查询非公开、公开数据
     * @return 文档信息
     */
    List<ApiDocument> getReadDocuments(Integer spaceId, boolean writeFlag, boolean pubOnlyFlag);
}
